package com.fosun.sprcore.tools.generatecode.base;

import java.util.ArrayList;
import java.util.List;

import com.fosun.sprcore.tools.generatecode.template.CrudModuleFileTemplate;
import com.fosun.sprcore.tools.generatecode.template.ModuleFileTemplate;
import com.fosun.sprcore.tools.generatecode.template.ServiceMethodTemplate;
import com.fosun.sprcore.tools.generatecode.template.CrudModuleFileTemplate.TableColumnModel;

public class GenerateCodeMain extends GcBaseTools {
	

	public void init() throws Exception{
		clearOutput();
		this.initFreeMaker();		
	}

	public static void main(String[] args) throws Exception {
		clearOutput();
		GenerateCodeMain main = new GenerateCodeMain();
		main.initFreeMaker();
		String projectWar = "mq_meet_server";
		//true false
		if(false){			
			ServiceMethodTemplate t = new ServiceMethodTemplate();
			t.setProjectWar(projectWar);
			t.setPackageName("com.fimuz.mqmeet");
			t.setServiceName("loginuser");
			t.setMethodName("changePassword");
			t.setSubmitMethod(ModuleFileTemplate.ServcieModel.SUBMITMETHOD_POST);
			t.setMethodType(null);
			t.generate(main);
		}
		if(false){
			ModuleFileTemplate t = new ModuleFileTemplate();
			t.setProjectWar(projectWar);
			t.setPackageName("com.fosun.spr.core");
			t.setModuleName("dict");
			t.addServcieModelList(new ModuleFileTemplate.ServcieModel("listDictValue",ModuleFileTemplate.ServcieModel.SUBMITMETHOD_GET,ModuleFileTemplate.ServcieModel.METHODTYPE_LIST));
			//t.addServcieModelList(new ModuleFileTemplate.ServcieModel("getRoom",ModuleFileTemplate.ServcieModel.SUBMITMETHOD_GET,null));
//			t.addServcieModelList(new ModuleFileTemplate.ServcieModel("createOrUpdate",ModuleFileTemplate.ServcieModel.SUBMITMETHOD_POST,null));
//			t.addServcieModelList(new ModuleFileTemplate.ServcieModel("delete",ModuleFileTemplate.ServcieModel.SUBMITMETHOD_POST,null));
//			t.addServcieModelList(new ModuleFileTemplate.ServcieModel("get",ModuleFileTemplate.ServcieModel.SUBMITMETHOD_GET,null));
//			t.addServcieModelList(new ModuleFileTemplate.ServcieModel("create",ModuleFileTemplate.ServcieModel.SUBMITMETHOD_POST,null));
//			t.addServcieModelList(new ModuleFileTemplate.ServcieModel("update",ModuleFileTemplate.ServcieModel.SUBMITMETHOD_POST,null));
//			t.addServcieModelList(new ModuleFileTemplate.ServcieModel("listBuildingregion",ModuleFileTemplate.ServcieModel.SUBMITMETHOD_GET,null));
			t.generate(main);			
		}	
		
		boodroom(main);
	}
	
	
	private static void boodroom(GenerateCodeMain main) throws Exception{
		CrudModuleFileTemplate t = new CrudModuleFileTemplate();
		//t.setProjectWar("");
		t.setPackageName("com.fimuz.mqmeet");
		t.setModuleName("boardroom2");
		
		t.setModuleLabel("会议室");
		t.setDbTablePrefix("hxz");
		t.setDbTablePrefixTag("_");
		t.setDbTableName("boardroom");
		
		List<TableColumnModel> cList = new ArrayList<TableColumnModel>();
		if(true) {
			TableColumnModel column = new TableColumnModel();
			column.setFieldName("buildingregion_id");
			column.setDataType("string");
			column.setComment("大楼区域");
			column.setIsNotNull("1");
			
			column.setDisplayType("select_remote");
			column.setDisplayTypeValue("/api/common/listBuildingregion");
			
			column.setIsInList("1");
			column.setIsInCreate("1");
			column.setIsInUpdate("1");
			cList.add(column);
		}
		if(true) {
			TableColumnModel column = new TableColumnModel();
			column.setFieldName("room_name");
			column.setDataType("string");
			column.setComment("会议室名称");
			column.setIsNotNull("1");
			
			column.setDisplayType("input_text");
			column.setDisplayTypeValue("");
			
			column.setIsInList("1");
			column.setIsInCreate("1");
			column.setIsInUpdate("1");
			cList.add(column);
		}			
		if(true) {
			TableColumnModel column = new TableColumnModel();
			column.setFieldName("max_person");
			column.setDataType("int");
			column.setComment("容纳人数");
			column.setIsNotNull("0");
			
			column.setDisplayType("input_number");
			column.setDisplayTypeValue("");
			
			column.setIsInList("1");
			column.setIsInCreate("1");
			column.setIsInUpdate("1");
			cList.add(column);
		}	
		if(true) {
			TableColumnModel column = new TableColumnModel();
			column.setFieldName("allow_anonybook");
			column.setDataType("string");
			column.setComment("是否允许匿名");
			column.setIsNotNull("1");
			
			column.setDisplayType("radio_dict");
			column.setDisplayTypeValue("YN");
			
			column.setIsInList("0");
			column.setIsInCreate("1");
			column.setIsInUpdate("1");
			cList.add(column);
		}	
		if(true) {
			TableColumnModel column = new TableColumnModel();
			column.setFieldName("onlyallow_huiwubook");
			column.setDataType("string");
			column.setComment("是否仅有会务预订");
			column.setIsNotNull("0");
			
			column.setDisplayType("radio_dict");
			column.setDisplayTypeValue("YN");
			
			column.setIsInList("0");
			column.setIsInCreate("1");
			column.setIsInUpdate("1");
			cList.add(column);
		}	
		if(true) {
			TableColumnModel column = new TableColumnModel();
			column.setFieldName("memo");
			column.setDataType("string");
			column.setComment("备注");
			column.setIsNotNull("0");
			
			column.setDisplayType("textarea");
			column.setDisplayTypeValue("");
			
			column.setIsInList("0");
			column.setIsInCreate("1");
			column.setIsInUpdate("1");
			cList.add(column);
		}			
		t.setTableColumnModelList(cList);
		t.generate(main);			
	}

	
	private static void test(GenerateCodeMain main) throws Exception {
		CrudModuleFileTemplate t = new CrudModuleFileTemplate();
		// t.setProjectWar("");
		t.setPackageName("com.fosun.spr.plugin.uuc");
		t.setModuleName("test");

		t.setModuleLabel("帐号管理");
		t.setDbTablePrefix("spr");
		t.setDbTablePrefixTag("_");
		t.setDbTableName("uuc_user");
		t.setUniqueColumn("login_no");
		t.setKeywordColumns(new String[] {"login_no"});
		t.setAdditionListSelectFields(null);

		List<TableColumnModel> cList = new ArrayList<TableColumnModel>();
		if (true) {
			TableColumnModel column = new TableColumnModel();
			column.setFieldName("login_no");
			column.setDataType("string");
			column.setComment("帐号名");
			column.setIsNotNull("1");

			column.setDisplayType("input_text");
			column.setDisplayTypeValue("");

			column.setIsInList("1");
			column.setIsInCreate("1");
			column.setIsInUpdate("1");
			cList.add(column);
		}
		t.setTableColumnModelList(cList);
		t.generate(main);
	}
}
